<?php
/* -------------------------------------------------------------------------------------
* 	ID:						$Id: preiswunder24.php 11 2013-09-21 11:43:11Z phone.mueller@googlemail.com $
* 	Letzter Stand:			$Revision: 11 $
* 	zuletzt geaendert von:	$Author: siekiera $
* 	Datum:					$Date: 2013-09-21 11:43:11 +0000 (Sat, 21 Sep 2013) $
*
* 	SEO:mercari by Siekiera Media
* 	http://www.seo-mercari.de
*
* 	Copyright (c) since 2011 SEO:mercari
* --------------------------------------------------------------------------------------
* 	based on:
* 	(c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
* 	(c) 2002-2003 osCommerce - www.oscommerce.com
* 	(c) 2003     nextcommerce - www.nextcommerce.org
* 	(c) 2005     xt:Commerce - www.xt-commerce.com
*
* 	Released under the GNU General Public License
* ----------------------------------------------------------------------------------- */

defined( '_VALID_XTC' ) or die( 'Direct Access to this location is not allowed.' );

define('MODULE_PREISWUNDER24_TEXT_DESCRIPTION', '<hr noshade="noshade">
<b>Export</b><br>PreisWunder24.de<br><br>
<b>Trennzeichen</b><br>getrennt durch (; getrennt)<br><br>
<b>Format</b><br>- Artikelbezeichnung<br>- Preis<br>- Artikelbeschreibung<br>- Deeplink<br>- EAN Nummer<br>- Produktbild URL<br>- Versandkosten<br>- HР Т‘ndlernummer<br><br>
<b>Modulversion</b><br>PreisWunder24.de - <i>v1.0</i>');
define('MODULE_PREISWUNDER24_TEXT_TITLE', 'PreisWunder24.de - CSV');
define('MODULE_PREISWUNDER24_FILE_TITLE' , '<hr noshade>Dateiname');
define('MODULE_PREISWUNDER24_FILE_DESC' , 'Geben Sie einen Dateinamen ein, falls die Exportadatei am Server gespeichert werden soll.<br>(Verzeichnis export/)');
define('MODULE_PREISWUNDER24_STATUS_DESC','Modulstatus');
define('MODULE_PREISWUNDER24_STATUS_TITLE','Status');
define('MODULE_PREISWUNDER24_CURRENCY_TITLE','W&auml;hrung');
define('MODULE_PREISWUNDER24_CURRENCY_DESC','Welche W&auml;hrung soll exportiert werden?');
define('MODULE_PREISWUNDER24_HEANDLERNUMMER_TITLE','<hr noshade><b>Ihre HР Т‘ndlernummer</b>');
define('MODULE_PREISWUNDER24_HEANDLERNUMMER_DESC','Tragen Sie hier Ihre HР Т‘ndlernummer ein die Sie von PreisWunder24 erhalten haben.');
define('MODULE_PREISWUNDER24_SHIPPING_COST_TITLE','<hr noshade><b>Versandkosten</b>');
define('MODULE_PREISWUNDER24_SHIPPING_COST_DESC','Die Versandkosten basieren auf dem Artikelpreis oder dem Artikelgewicht. Beispiel: 25:4.90,50:9.90,etc.. Bis 25 werden 4.90 verrechnet, dar&uuml;ber bis 50 werden 9.90 verrechnet, etc.');
define('MODULE_PREISWUNDER24_SHIPPING_ART_TITLE','<hr noshade><b>Versandkosten-Methode</b>');
define('MODULE_PREISWUNDER24_SHIPPING_ART_DESC','Die Versandkosten basieren auf dem Artikelpreis oder dem Artikelgewicht.');
define('EXPORT_YES','Nur Herunterladen');
define('EXPORT_NO','Am Server Speichern');
define('CURRENCY','<hr noshade><b>W&auml;hrung:</b>');
define('CURRENCY_DESC','W&auml;hrung in der Exportdatei');
define('EXPORT','Bitte den Sicherungsprozess AUF KEINEN FALL unterbrechen. Dieser kann einige Minuten in Anspruch nehmen.');
define('EXPORT_TYPE','<hr noshade><b>Speicherart:</b>');
define('EXPORT_STATUS_TYPE','<hr noshade><b>Kundengruppe:</b>');
define('EXPORT_STATUS','Bitte w&auml;hlen Sie die Kundengruppe, die Basis f&uuml;r den Exportierten Preis bildet. (Falls Sie keine Kundengruppenpreise haben, w&auml;hlen Sie <i>Gast</i>):</b>');
define('CAMPAIGNS','<hr noshade><b>Kampagnen:</b>');
define('CAMPAIGNS_DESC','Mit Kampagne zur Nachverfolgung verbinden.');
define('DATE_FORMAT_EXPORT', '%d.%m.%Y');

class preiswunder24 {
	var $code, $title, $description, $enabled, $db;

    function __construct() {
		global $order, $db;

		$this->code = 'preiswunder24';
		$this->img = 'images/export/preiswunder24.gif';
		$this->title = MODULE_PREISWUNDER24_TEXT_TITLE;
		$this->description = MODULE_PREISWUNDER24_TEXT_DESCRIPTION;
		$this->sort_order = MODULE_PREISWUNDER24_SORT_ORDER;
		$this->enabled = ((MODULE_PREISWUNDER24_STATUS == 'True') ? true : false);
		$this->CAT = array();
		$this->PARENT = array();
		$this->db = $db;
    }

    function process($file) {

        @set_time_limit(0);
        require(DIR_FS_CATALOG.DIR_WS_CLASSES.'class.price.php');
        $price = new price($_POST['currencies'],$_POST['status'], $this->db);

        if ($_POST['shippingcosts'] != MODULE_PREISWUNDER24_SHIPPING_COST)
			$this->db->db_query("UPDATE ".TABLE_CONFIGURATION." set configuration_value = ".$this->db->db_prepare($_POST['shippingcosts'])." WHERE configuration_key = 'MODULE_PREISWUNDER24_SHIPPING_COST'");

		if ($_POST['heandlernummer'] != MODULE_HEANDLER_NUMMER) {
			$this->db->db_query("UPDATE ".TABLE_CONFIGURATION." set configuration_value = ".$this->db->db_prepare($_POST['heandlernummer'])." WHERE configuration_key = 'MODULE_HEANDLER_NUMMER'");
		}

        $products = $this->db->db_query("SELECT
												p.products_id,
												pd.products_name,
												pd.products_short_description,
												p.products_ean,
												p.products_image,
												p.products_price,
												p.products_status,
												p.products_weight,
												p.products_tax_class_id,
												p.products_date_added,
												m.brand_name
											FROM
												".TABLE_PRODUCTS." p
												LEFT JOIN
													".TABLE_BRAND." m
														ON p.brand_id = m.brand_id
												LEFT JOIN
													".TABLE_PRODUCTS_DESCRIPTION." pd
														ON p.products_id = pd.products_id AND
												pd.language_id = '".$_SESSION['languages_id']."'
												LEFT JOIN
													".TABLE_SPECIALS." s
														ON p.products_id = s.products_id
											WHERE
												p.products_status = 1
											ORDER BY
												p.products_date_added DESC,
												pd.products_name");


        while(!$products->EOF) {

            $products_price = $price->GetPrice($products->fields['products_id'], false, 1, $products->fields['products_tax_class_id']);

            $categorie = $this->db->db_query("SELECT
														categories_id
													FROM
														".TABLE_PRODUCTS_TO_CATEGORIES."
													WHERE
														products_id='".$products->fields['products_id']."'");

			while(!$categorie->EOF) {
				$categories = $categorie->fields['categories_id'];
				$categorie->MoveNext();
			}

		    $products_name = strip_tags($products->fields['products_name']);
            $products_name = str_replace("<br>"," ",$products_name);
            $products_name = str_replace("<br />"," ",$products_name);
            $products_name = str_replace(";",", ",$products_name);
            $products_name = str_replace("'",", ",$products_name);
			$products_name = str_replace("|",", ",$products_name);
            $products_name = str_replace("\n"," ",$products_name);
            $products_name = str_replace("\r"," ",$products_name);
            $products_name = str_replace("\t"," ",$products_name);
            $products_name = str_replace("\v"," ",$products_name);
            $products_name = str_replace("&quot,"," \"",$products_name);
            $products_name = str_replace("&qout,"," \"",$products_name);
            $products_name = str_replace(chr(13)," ",$products_name);

            $products_short_description = strip_tags($products->fields['products_short_description']);
            $products_short_description = str_replace("<br>"," ",$products_short_description);
            $products_short_description = str_replace("<br />"," ",$products_short_description);
            $products_short_description = str_replace(";",", ",$products_short_description);
            $products_short_description = str_replace("'",", ",$products_short_description);
			$products_short_description = str_replace("|",", ",$products_short_description);
            $products_short_description = str_replace("\n"," ",$products_short_description);
            $products_short_description = str_replace("\r"," ",$products_short_description);
            $products_short_description = str_replace("\t"," ",$products_short_description);
            $products_short_description = str_replace("\v"," ",$products_short_description);
            $products_short_description = str_replace("&quot,"," \"",$products_short_description);
            $products_short_description = str_replace("&qout,"," \"",$products_short_description);
            $products_short_description = str_replace(chr(13)," ",$products_short_description);
            $products_short_description = substr($products_short_description, 0, 255);
			$products_description = substr($products_description, 0, 65536);

			if ($_POST['shippingcosts'] != MODULE_PREISWUNDER24_SHIPPING_COST) {
					$this->db->db_query("UPDATE ".TABLE_CONFIGURATION." set configuration_value = ".$this->db->db_prepare($_POST['shippingcosts'])." WHERE configuration_key = 'MODULE_PREISWUNDER24_SHIPPING_COST'");
				}

			if ($products->fields['products_image'] != ''){
			    $image = HTTP_CATALOG_SERVER.DIR_WS_CATALOG_THUMBNAIL_IMAGES .$products->fields['products_image'];
			}else{
			    $image = '';
			}
			if ($products->fields['products_weight'] != '0.00'){
				$weight = number_format($products->fields['products_weight'],2,'.','');
			} else {
				$weight = '';
			}
			$versand = '0.00';
			if ($products_price < MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER && MODULE_ORDER_TOTAL_LOWORDERFEE_STATUS == 'true') {
				$customers_tax_value = $this->db->db_query("SELECT customers_status_show_price_tax, customers_status_add_tax_ot FROM ".TABLE_CUSTOMERS_STATUS." WHERE customers_status_id = '".(int)$_POST['status']."' AND language_id = '".(int)$_SESSION['languages_id']."'");
				$tax = get_tax_rate(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS);
				if ($customers_tax_value->fields['customers_status_show_price_tax'] == 1) {
					$low_order_fee = add_tax(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, $tax);
				}
				if ($customers_tax_value->fields['customers_status_show_price_tax'] == 0 && $customers_tax_value->fields['customers_status_add_tax_ot'] == 1) {
					$low_order_fee = MODULE_ORDER_TOTAL_LOWORDERFEE_FEE;
				}
				if ($customers_tax_value->fields['customers_status_show_price_tax'] == 0 && $customers_tax_value->fields['customers_status_add_tax_ot'] != 1) {
					$low_order_fee = MODULE_ORDER_TOTAL_LOWORDERFEE_FEE;
				}
				$versand = $versand + $low_order_fee;
			}
            if ($products_price > MODULE_SHIPPING_FREEAMOUNT_AMOUNT && MODULE_SHIPPING_FREEAMOUNT_STATUS == 'True') {
				$versand = $versand;
			} else if ($products_price > MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER && MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') {
				$versand = $versand;
			} else {
				$shipping = -1;
				$shippinglist = split("[:,]" , $_POST['shippingcosts']);
				for ($i=0; $i<sizeof($shippinglist); $i+=2) {
					if ($_POST['shippingart'] == 'weight') {
				  		if ($products->fields['products_weight'] <= $shippinglist[$i]) {
							$shipping = $shippinglist[$i+1];
							break;
				  		}
					} else if ($_POST['shippingart'] == 'price') {
						if ($products_price <= $shippinglist[$i]) {
							$shipping = $shippinglist[$i+1];
							break;
				  		}
					}
				}
				if ($shipping == -1) {
				  $shipping_cost = 0;
				} else {
				  $shipping_cost = $shipping;
				}
				$versand = $versand + $shipping_cost;
			}

            $schema .=  $products_name.";".
            			number_format($products_price,2,',','') .';'.
            			$products_short_description.";".
                        HTTP_CATALOG_SERVER.DIR_WS_CATALOG.'product_info.php?'.$_POST['campaign'].product_link($products->fields['products_id'], $products->fields['products_name']).";" .
						$products->fields['products_ean'] .';'.
						$image.";".
                        number_format($versand,2,',','').";".
						$_POST['heandlernummer'] ."\n";

			$export->MoveNext();
		}

          $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/'.$file, "w+");
          fputs($fp, $schema);
          fclose($fp);


      switch ($_POST['export']) {
        case 'yes':
            // send File to Browser
            $extension = substr($file, -3);
            $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/'.$file,"rb");
            $buffer = fread($fp, filesize(DIR_FS_DOCUMENT_ROOT.'export/'.$file));
            fclose($fp);
            header('Content-type: application/x-octet-stream');
            header('Content-disposition: attachment; filename='.$file);
            echo $buffer;
            exit;

        break;
        }

    }

    function buildCAT($catID) {

        if (isset($this->CAT[$catID]))
        	return  $this->CAT[$catID];
        else {
           $cat=array();
           $tmpID=$catID;

				while($this->getParent($catID)!=0 || $catID!=0) {
					$cat_data = $this->db->db_query("SELECT categories_name FROM ".TABLE_CATEGORIES_DESCRIPTION." WHERE categories_id='".$catID."' and language_id='".$_SESSION['languages_id']."'");
					$catID = $this->getParent($catID);
					$cat[] = $cat_data->fields['categories_name'];
				}
				$catStr='';
				for ($i=count($cat);$i>0;$i--)
					$catStr.=$cat[$i-1].' > ';

			$this->CAT[$tmpID] = $catStr;
			return $this->CAT[$tmpID];
		}
    }

	function getParent($catID) {
		if (isset($this->PARENT[$catID]))
			return $this->PARENT[$catID];

		else {
			$parent = $this->db->db_query("SELECT parent_id FROM ".TABLE_CATEGORIES." WHERE categories_id='".$catID."'");
			$this->PARENT[$catID] = $parent->fields['parent_id'];
			return  $parent->fields['parent_id'];
		}
	}

    function display() {

   		$customers_statuses_array = get_customers_statuses();

    	$curr='';
		$currencies = $this->db->db_query("SELECT code FROM ".TABLE_CURRENCIES);
	    while(!$currencies->EOF) {
	    	$curr.=draw_radio_field('currencies', $currencies_data->fields['code'],true).$currencies_data->fields['code'].'<br />';
	    	$currencies->MoveNext();
	    }

	    $campaign_array = array(array('id' => '', 'text' => TEXT_NONE));
		$campaign = $this->db->db_query("SELECT campaigns_name, campaigns_refID FROM ".TABLE_CAMPAIGNS." ORDER BY campaigns_id");

		while(!$campaign->EOF) {
			$campaign_array[] = array ('id' => 'refID='.$campaign->fields['campaigns_refID'].'&', 'text' => $campaign->fields['campaigns_name']);
			$campaign->MoveNext();
		}

		$shipping_country_array = array(array('id' => '', 'text' => TEXT_NONE));

		$shipping_country = $this->db->db_query("SELECT countries_iso_code_2 FROM ".TABLE_COUNTRIES." ORDER BY countries_iso_code_2");

		while(!$shipping_country->EOF) {
			$shipping_country_array[] = array('id' => strtoupper($shipping_country->fields['countries_iso_code_2']), 'text' => strtoupper($shipping_country->fields['countries_iso_code_2']));
			$shipping_country->MoveNext();
		}
		return array('text' =>  EXPORT_STATUS_TYPE.'<br>'.
		                      	EXPORT_STATUS.'<br>'.
		                      	draw_pull_down_menu('status',$customers_statuses_array, '1').'<br>'.
		                        CURRENCY.'<br>'.
		                        CURRENCY_DESC.'<br>'.
		                        $curr.'<b>'.
								MODULE_PREISWUNDER24_HEANDLERNUMMER_TITLE.'</b><br />'.
								MODULE_PREISWUNDER24_HEANDLERNUMMER_DESC.'<br />'.
								draw_input_field('heandlernummer',MODULE_HEANDLER_NUMMER).'<br />'.'<b>'.
								MODULE_PREISWUNDER24_SHIPPING_COST_TITLE.'</b><br />'.
								MODULE_PREISWUNDER24_SHIPPING_COST_DESC.'<br />'.
								draw_input_field('shippingcosts',MODULE_PREISWUNDER24_SHIPPING_COST).'<br />'.'<b>'.
								MODULE_PREISWUNDER24_SHIPPING_ART_TITLE.'</b><br />'.
								MODULE_PREISWUNDER24_SHIPPING_ART_DESC.'<br />'.
								draw_radio_field('shippingart', 'weight',true).'Versandksten nach Gewicht<br />'.
								draw_radio_field('shippingart', 'price',false).'Versandkosten nach Preis<br />'.
		                        CAMPAIGNS.'<br>'.
		                        CAMPAIGNS_DESC.'<br>'.
		                      	draw_pull_down_menu('campaign',$campaign_array).'<br>'.
		                        EXPORT_TYPE.'<br>'.
		                        EXPORT.'<br>'.
		                      	draw_radio_field('export', 'no',false).EXPORT_NO.'<br>'.
		                        draw_radio_field('export', 'yes',true).EXPORT_YES.'<br>'.
		                        '<br>'.button(BUTTON_EXPORT) .
		                        button_link(BUTTON_CANCEL, href_link(FILENAME_MODULE_EXPORT, 'set='.$_GET['set'].'&module=preiswunder24')));


    }

    function check() {
		if (!isset($this->_check)) {
			$check = $this->db->db_query("SELECT configuration_value from ".TABLE_CONFIGURATION." WHERE configuration_key = 'MODULE_PREISWUNDER24_STATUS'");
			$this->_check = $check->_numOfRows;
		}
		return $this->_check;
    }

    function install() {
		$this->db->db_query("INSERT INTO ".TABLE_CONFIGURATION." (configuration_key, configuration_value,  configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_PREISWUNDER24_FILE', 'preiswunder24.csv', '6', '1', '', now())");
		$this->db->db_query("INSERT INTO ".TABLE_CONFIGURATION." (configuration_key, configuration_value,  configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_PREISWUNDER24_STATUS', 'True',  '6', '1', 'cfg_select_option(array(\'True\', \'False\'), ', now())");
		$this->db->db_query("INSERT INTO ".TABLE_CONFIGURATION." (configuration_key, configuration_value,  configuration_group_id, sort_order, use_function, set_function, date_added) VALUES ('MODULE_PREISWUNDER24_SHIPPING_COST', '25:6.90,50:9.90,10000:0.00', '6', '1', '', '', now())");
		$this->db->db_query("INSERT INTO ".TABLE_CONFIGURATION." (configuration_key, configuration_value,  configuration_group_id, sort_order, use_function, set_function, date_added) VALUES ('MODULE_HEANDLER_NUMMER', '00000', '6', '1', '', '', now())");
	}

	function remove() {
		$this->db->db_query("DELETE FROM ".TABLE_CONFIGURATION." WHERE configuration_key in ('".implode("', '", $this->keys())."')");
		$this->db->db_query("DELETE FROM ".TABLE_CONFIGURATION." WHERE configuration_key = 'MODULE_PREISWUNDER24_SHIPPING_COST'");
		$this->db->db_query("DELETE FROM ".TABLE_CONFIGURATION." WHERE configuration_key = 'MODULE_HEANDLER_NUMMER'");
    }

    function keys() {
		return array('MODULE_PREISWUNDER24_STATUS','MODULE_PREISWUNDER24_FILE');
    }
}
?>